Python基于NumPy模块的矩阵运算 | 您所在的位置:网站首页 › python 列表矩阵 › Python基于NumPy模块的矩阵运算 |
「由于微信公众号改变了推送规则,为了每次新的推送可以在第一时间出现在您的订阅列表中,记得将本公众号设为星标或置顶喔~」 NumPy 是基于 c 语言而编写的一个开源的 Python 科学计算库,使用 NumPy,就可以很自然地使用数组和矩阵,其存储效率和输入输出性能远远优于 Python 中等价的基本数据结构,同样的数值计算任务,使用 NumPy 要比直接编写 Python 代码便捷得多。NumPy 包含了很多很实用的 NumPy 数学函数,涵盖线性代数、傅里叶变换等功能,因此 NumPy 深受许多开发者的喜爱。 本文根据 Python 的 NumPy 模块,整理了一些常见的矩阵操作。本文所有代码都是基于import numpy as np导入了 numpy 语句而书写。 1 定义矩阵 直接创建矩阵创建一个矩阵可以直接对列表对象转化,也可以对字符串对象进行转化(G 格式和 matlab 一致) 列表转化为矩阵 # 创建一维行向量 a = np.array([1, 2, 3])# 创建二维矩阵 b = np.array([[1, 2, 3], [4, 5, 6]]) print("a:", a) print("b:", b) 输出结果: 输出结果: NumPy 提供有很方便创建全 0 矩阵、单位矩阵、随机矩阵的函数。 创建全 0 矩阵 c = np.zeros((3, 3))print("c:", c)输出结果: 输出结果: 输出结果: 输出结果: 输出结果: 这里要注意的是矩阵之间直接使用四则运算符号+ - * /代表的是两个矩阵对应元素的四则运算,所以传入的矩阵一定要大小相等。我们可以使用a.shape查看矩阵的大小。 h = np.array([[1, 2, 3], [4, 5, 6]])g = np.array([[7, 8, 9], [10, 11, 12]])print("h+g:", h + g) # 加print("h-g:", h - g) # 减print("h*g:", h * g) # 乘print("h/g:", h / g) # 除输出结果: 输出结果: 这里介绍了三种矩阵点乘的方式,实际编程中我们只需要选择掌握一种即可。 h = np.array([[1, 2, 3], [4, 5, 6]])g = np.array([[7, 8, 9], [10, 11, 12]])print("h点乘(g的转置)", np.dot(h, g.T))print("h点乘(g的转置)", h.dot(g.T))print("h点乘(g的转置)", np.matmul(h, g.T))输出结果: ![]() 输出结果: 输出结果: 输出结果: 输出结果: 使用eigvals函数可以获取矩阵的特征值,使用eig函数可以获取矩阵的特征值和特征向量,其返回的是一个二元组,第0个元素是特征值,第1个元素是特征向量。 m = np.mat("3 -2;1 0")print("m的特征值:", np.linalg.eigvals(m))# eig求特征值与特征向量,返回元组m_tem1, m_tem2 = np.linalg.eig(m)print("m的特征向量:",m_tem2)输出结果: 计算矩阵行列式时,要注意矩阵是否是方阵。 n = np.random.randint(1, 10, (2, 2))print("n:", n)print("n的行列式:", np.linalg.det(n))输出结果: 输出结果: 输出结果: NumPy 提供有最大值最小值获取函数,可以很方便的获取一个矩阵的最值,从而便于进行区间中点的计算等操作。 p = np.array([[1, 2, 3], [4, 5, 6]])print("最大值", np.min(p))print("最小值", np.max(p))输出结果: 使用 vstack 函数可以将两个数组进行垂直方向的合并,使用 hstack 函数可以将两个数组进行水平方向的合并。 q = np.array([[1, 2], [3, 4]])r = np.array([[5, 6], [7, 8]])print("垂直组合:", np.vstack((q, r)))print("水平组合:", np.hstack((q, r)))输出结果: NumPy 模块的内容不仅仅局限于此,想要了解更过的 numpy 模块使用知识,请参考NumPy 参考手册 | NumPy同时也欢迎读者的宝贵建议与支持! 「本公众号的原创成果,在未经允许的情况下,请勿用于任何商业用途!」 「您的点赞、收藏与关注是我创作的最大动力!」 ![]() |
CopyRight 2018-2019 实验室设备网 版权所有 |